Data traffic flowing through today's Internet includes a varied mix of data patterns. Different forms of text traffic can be found in web pages and emails. Different forms of binary traffic that traverses the Internet includes voice video, file transfers, along with undesirable traffic, such as malware and security attacks.
There are different types of network equipment like firewalls, WAN optimizers, deep packet inspection devices that need to process part or all of this data traffic in order to optimize the traffic flow or segregate or even block some part of the traffic. In order to test and validate such equipment, it is desirable to emulate some or all these payload patterns on top of various Open System Interconnect (OSI) layer 7 protocols.
One possible approach for emulating the different payload patterns is to store the payloads in multiple data files, read the data from the data files, and send the data on top of layer 7 protocols. In such an implementation, layer 7 protocol emulators would only be required to have the capability to read data files, and some current emulators have the ability to read data files. One issue with having emulators use file read operations to access data is that some emulators are required to generate gigabits of data per second. To feed such an emulator with a mix of payloads at that rate and still ensure that the same traffic is not being sent repeatedly, a large collection of such data files and a matching amount of storage would be required. The volume of required storage may require the use of disks. However, using disks for the storage is not a good option because of slow disk read speeds. Using RAM increases the read speeds, but the volume of RAM required is prohibitively expensive.
Another possible solution to emulating a diverse traffic mix is to use algorithms to generate different patterns of data in real time and use the generated data as the payload. Yet another possible solution is to use data taken from different files to prepare a mix of data which will be very close to what flows through the Internet.
One problem with including complex data generation logic in protocol emulators would lead to redundancy and maintenance overhead. Data generators could also be implemented as software libraries from which the emulator can read. Such an approach requires code in each of the emulators to identify the current test requirement and select the proper library from which to read. In short, all of the emulators need to be aware of all the existing data generator libraries and know how to read from the libraries.
Implementing different logic for each emulator is inefficient and not scalable. For example, when a change is made to a test protocol, the emulator code for each emulator must be modified to implement such a change. Requiring code modifications to implement each protocol change is undesirable.
Accordingly, there exists a need for methods, systems, and computer readable media for providing a unified framework to support diverse data generation engines.